// 棋子基础信息
#ifndef _CHESS_PIECES_H_
#define _CHESS_PIECES_H_

#include "base_struct.h"

enum CAMP
{
    RED = 0,
    BLACK = 1
};
enum _Chess_TYPE
{
    CarLeft = 0,
    CarRight,
    HorseLeft,
    HorseRight,
    ElephantLeft,
    ElephantRight,
    BachelorLeft,
    BachelorRight,
    GunLeft,
    GunRight,
    Will,
    Redarms1,
    Redarms2,
    Redarms3,
    Redarms4,
    Redarms5,
};

enum Boundary
{
    Boundary_mini_x = 0,
    Boundary_max_x = 8,
    Boundary_mini_y = 0,
    Boundary_max_y = 9
};

class Chess
{
protected:
    int camp;
    int chess_type;
    Position pos;

public:
    Chess(int camp, int ChessType, Position pos) : camp(camp), chess_type(ChessType), pos(pos){};
    Position getPosition() { return pos; };
    void setPosition(const Position &pos) { this->pos = pos; };
    int getChessType() { return chess_type; };
    ChessInfo getChessInfo()
    {
        ChessInfo info = {.camp = camp, .chess_type = chess_type, .pos = pos};
        return info;
    };
    ~Chess(){};
};

#endif
//_CHESS_PIECES_H_